/**
 * Author : Jorge Mejuto Create : 15/03/2011
 * 
 * Hay que crear una hoja de calculo con los datos de la siguiente manera en la a partir de la segunda columna : fila 1: id_parque, doce filas de
 * datos (una por mes).
 * 
 */

package net.eyra.test;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;

import net.eyra.utiles.HojaXLS;

import com.mysql.jdbc.Statement;

public class CargarPrediccionProduccion {

    private HojaXLS excel = null;
    final private String nombre_fichero = "/home/jorge/Escritorio/datos.xls";
    final private int numero_parques = 5; // Numero de parques de la tabla
    final private String anno = "2011";

    public static void main(String[] args) throws Exception {
        CargarPrediccionProduccion c = new CargarPrediccionProduccion();
        c.CargarHojaExcel();
    }

    private void CargarHojaExcel() throws Exception {
        CargarFichero();
        excel.CargarHoja(0);

        // Se multimplica por 13 por 12 meses + 1 de id_parque que tiene que cambiarse en la excel por el nombre de parque
        ArrayList<Object> valores = new ArrayList<Object>(numero_parques * 13);
        for (int x = 0; x < numero_parques; x++) {
            // Estas dos lineas graban el id_parque
            excel.CargarLinea(0);
            valores.add(excel.getValorNumeroCelda(x + 1));
            for (int y = 0; y < 12; y++) {
                excel.CargarLinea(y + 1);
                valores.add(excel.getValorNumeroCelda(x + 1));
            }
        }

        ConexionMySql mysql = null;
        try {
            mysql = new ConexionMySql();
        } catch (Exception e) {
            e.printStackTrace();
        }
        Connection conexion = mysql.getConexion();
        Statement stmt = null;
        try {
            stmt = (Statement) conexion.createStatement();
            stmt.clearBatch();
        } catch (SQLException e) {
            e.printStackTrace();
        }

        for (int x = 0; x < numero_parques; x++) {
            int id_parque = ((Double) valores.get(x * 13)).intValue();
            for (int y = 1; y < 13; y++) {
                String sql = "INSERT INTO previsiones_produccion (id_parque, año, mes, prevision)  VALUES(";
                sql += id_parque + "," + anno + "," + y + "," + valores.get(x * 13 + y) + ")";
                try {
                    stmt.executeUpdate(sql);
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }

        try {
            stmt.close();
            conexion.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private void CargarFichero() throws Exception {
        if (excel == null) excel = new HojaXLS(nombre_fichero);
        else excel.setFicheroExcel(nombre_fichero);
        excel.CargarFicheroXLS();
    }

}
